package net.huashitong.ssydt.provider.comment.service;

import net.huashitong.ssydt.provider.comment.vo.CommentListQueryVO;
import net.huashitong.ssydt.provider.comment.vo.CommentVO;
import net.huashitong.ssydt.provider.comment.vo.MyCommentVO;
import net.huashitong.ssydt.provider.comment.vo.ReplyCommentVO;
import net.huashitong.ssydt.provider.comment.vo.SsydtCommentInVo;
import net.huashitong.ssydt.provider.vo.UserBaseLongIdPagingVO;

import java.util.List;

/**
 * @author <a href="mailto:yhy23456@163.com">huiyang.yu</a>
 * @since 2017.09.20
 */
public interface CommentService {

    /**
     * <p>文章热门评论列表<p/>
     * <p>只取5条记录<p/>
     *
     * @param articleId
     * @param userId
     * @return
     */
    List<CommentVO> getArticleTopFiveHotCommonList(Long articleId, String userId);

    /**
     * 文章下该用户非审核通过的评论数量
     *
     * @param articleId
     * @param userId
     * @return
     */
    Integer getArticleNonCheckPass(Long articleId, String userId);

    /**
     * 获取文章的评论数
     *
     * @param articleId
     * @return
     */
    Integer getArticleCommentsNumber(Long articleId);

    /**
     * 评论详情
     *
     * @param userId
     * @param commentId
     * @return
     */
    MyCommentVO getComments(String userId, Long commentId);

    /**
     * 回复评论
     *
     * @param replyCommentVO
     */
    void postReplyComments(ReplyCommentVO replyCommentVO);

    /**
     * 删除评论
     *
     * @param commentId
     * @param userId
     */
    void deleteComments(Long commentId, String userId);

    /**
     * 评论点赞
     *
     * @param commentId
     * @param userId
     */
    void postCommentPraises(Long commentId, String userId);

    /**
     * 评论列表
     *
     * @param commentListQueryVO
     * @return
     */
    List<CommentVO> getCommentList(CommentListQueryVO commentListQueryVO);

    /**
     * 发表评论
     *
     * @param ssydtCommentInVo
     */
    void postComments(SsydtCommentInVo ssydtCommentInVo);

    /**
     * 取消评论点赞
     *
     * @param commentId
     * @param userId
     */
    void deleteCommentPraises(Long commentId, String userId);

    /**
     * 我的评论列表
     *
     * @param paging
     * @return
     */
    List<MyCommentVO> getMyCommentList(UserBaseLongIdPagingVO paging);
}
